package com.eugene.element;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.eugene.enums.EScenarioTypeNew;

public class ScenarioDef {
	private final static Logger logger = LoggerFactory.getLogger(ScenarioDef.class);
	
	private String sceDefId;
	private String sceSetId;
	
	private EScenarioTypeNew sceType;

	private int sceNum;
	private int timeHorizon;

	private Map<MarketVariable,Double> sceDetailsMap = new LinkedHashMap<MarketVariable, Double>();
	
//	private UnaryOperation<Functionable> sceOperation;
	
//	****************End of Member*********************
	public ScenarioDef(){
		
	}
	public ScenarioDef(String sceSetId, EScenarioTypeNew sceType, int timeHorizon){
		this.sceSetId =sceSetId;
		this.sceType = sceType;
		this.timeHorizon = timeHorizon;
	}

	public String getSceDefId() {
		return sceDefId;
	}

	public void setSceDefId(String sceDefId) {
		this.sceDefId = sceDefId;
	}

	public String getSceSetId() {
		return sceSetId;
	}

	public void setSceSetId(String sceSetId) {
		this.sceSetId = sceSetId;
	}


	public EScenarioTypeNew getSceType() {
		return sceType;
	}

	public void setSceType(EScenarioTypeNew sceType) {
		this.sceType = sceType;
	}

	public int getSceNum() {
		return sceNum;
	}

	public void setSceNum(int sceNum) {
		this.sceNum = sceNum;
	}

	public int getTimeHorizon() {
		return timeHorizon;
	}

	public void setTimeHorizon(int timeHorizon) {
		this.timeHorizon = timeHorizon;
	}

	public Map<MarketVariable, Double> getSceDetailsMap() {
		return sceDetailsMap;
	}

	public void setSceDetailsMap(Map<MarketVariable, Double> sceMap) {
		this.sceDetailsMap = sceMap;
	}

//	public UnaryOperation<Functionable> getSceOperation() {
//		return sceOperation;
//	}
//
//	public void setSceOperation(UnaryOperation<Functionable> sceOperation) {
//		this.sceOperation = sceOperation;
//	}
	
//***********************Biz Method********************
	public List<ScenarioRst> createScenario(FnCalendar baseDate){
		return getSceType().createScenario(this, baseDate);
	}
	
	
	

}
